package com.pai4j.zwiki.domain.entity;

import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.CreationTimestamp;

import java.time.LocalDateTime;

/**
 * 论文版本实体
 * 存储论文的多个版本，支持预览和迭代优化
 *
 * @author pai4j
 * @since 2025-10-12
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "pai4j_thesis_version", indexes = {
        @Index(name = "idx_task_id_version", columnList = "taskId,version")
})
public class ThesisVersionEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    /**
     * 关联的分析任务ID
     */
    @Column(nullable = false, length = 64)
    private String taskId;

    /**
     * 版本号（从1开始递增）
     */
    @Column(nullable = false)
    private Integer version;

    /**
     * 论文完整内容（JSON格式，包含所有章节）
     */
    @Column(columnDefinition = "LONGTEXT")
    private String fullContent;

    /**
     * 论文HTML预览内容
     */
    @Column(columnDefinition = "LONGTEXT")
    private String htmlPreview;

    /**
     * DOCX文件路径
     */
    @Column(length = 512)
    private String docxFilePath;

    /**
     * 版本状态：draft, preview, final
     */
    @Column(nullable = false, length = 20)
    private String status;

    /**
     * 版本说明
     */
    @Column(columnDefinition = "TEXT")
    private String versionNotes;

    /**
     * 使用的模板路径
     */
    @Column(length = 512)
    private String templatePath;

    /**
     * 插入的图表信息（JSON格式）
     */
    @Column(columnDefinition = "TEXT")
    private String insertedDiagrams;

    /**
     * 是否为当前版本
     */
    @Column(nullable = false)
    private Boolean isCurrent = false;

    /**
     * 创建时间
     */
    @CreationTimestamp
    @Column(nullable = false, updatable = false)
    private LocalDateTime createdAt;
}

